|
Developers who are creating multimedia applications in C or C++ can use either the Intel RDX base-level APIs or the higher-level RDX COM APIs. The RDX base-level APIs provide the maximum control of surfaces, sprites, backgrounds, audio, and video objects, while the Intel RDX COM APIs provide a subset of Intel RDX functionality through a set of COM-compliant interfaces. These interfaces make more assumptions and require less input from the developer. The Intel RDX Java* language interface derives from the Intel RDX COM API and requires the Microsoft virtual machine for Java. Intel ActiveRDX Control enables developers to create multimedia applications in VBScript*, JavaScript*, or other scripting languages. Web applications or browsers can embed ActiveX multimedia controls to invoke these scripts. The following figure shows how these interfaces and types of applications relate to Intel RDX.
Processor-specific optimizations. This key feature of the Intel RDX system provides a library of highly tuned Intel RDX modules for specific processors. At initialization time, the Intel RDX system detects which processor it is running on and loads the appropriate processor-specific software library.
Ease of Use. Intel RDX offers an object-based interface for creating and manipulating multimedia objects and devices. This eliminates the need to deal with low-level details, leaving you free to concentrate on content creation and application-specific programming tasks. It can help you get your application to market quickly.
Extensibility. The extensibility in Intel RDX allows you to manipulate the contents of a surface by launching an application-defined function through Intel RDX’s render callback function. It also lets you create user-defined filters to manipulate and control ActiveMovie* streams which are displayed onto an Intel RDX surface.
Display Mixing. In the past, the use of display mixing was somewhat limited because video and graphics were treated as independent entities. As a result, many multimedia Windows applications used one data type or the other, but not both. Instead of using bit-block transfer (bitblt) and write-raster operations to perform display mixing, you only need to create a set of objects, define their generic attributes, map them to a surface, and then draw the surface. Each of these operations is accomplished by simple, high-level function calls. With Intel RDX, display mixing is software-based, done in real-time, and requires no special hardware.
High Performance. The Intel RDX library was designed with performance in mind. For example, we purposely chose to abstract objects at the interface level so that we could implement many functions in highly tuned assembly language modules and take advantage of hardware acceleration where possible. We minimized buffer copying during display mixing. Instead of copying video and graphics data to separate buffers and then mixing them in a third buffer (which can be very time consuming), Intel RDX puts video and graphics data in the same buffer from the beginning, eliminating a serious performance bottleneck.
Coordinated Activities. Multimedia applications are primarily based on displayable objects but they also need audio objects and the ability to coordinate their interplay easily and accurately. The Intel RDX library supports these needs in three ways. First, it provides timers and events to support application scheduling and synchronization. Second, it provides automatic synchronization between audio and video objects. Third, it allows you to place objects in a group and then perform certain operations on all the objects in the group with a single function call.
Performance improvements. In addition to high performance, the Intel RDX library also provides support for future performance improvements in the underlying hardware and software. For example, MMXTM technology was added in the 2.1 release.
Predefined object types. These include sprites, backgrounds, tiles, grids, surfaces, groups, audio tracks, video tracks, and AV objects. We even provide an object that allows you to connect Intel RDX with ActiveMovie. These object types help you create multimedia applications that are powerful, yet flexible.
Generic attributes for all objects. These include view, visibility, draw order, current image, destination, destination rectangle, transparent color and position. These attributes, common to all Intel RDX objects, allow you to define the specific characteristics of the objects you create.
Attribute management functions. These functions set, get, and adjust the values of generic attributes and allow you to modify the characteristics of your objects dynamically.
Object-specific functions. These functions allow you to perform object-specific operations such as creating and deleting objects, associating data with objects, and performing special operations (pausing and resuming the playback of an AV object, for example).
Surfaces. A surface is a destination to which you map a collection of displayable objects. Each object’s attributes determine how and when the object is drawn to a surface. A surface can be mapped to a window for immediate display on the screen, to a memory buffer for later use, or to another surface if you want to treat the (first) surface as a displayable object.
Groups. A group is a collection of objects. You can get, set, and adjust the value of a specific attribute for all the objects in a group in a single function call. You can also determine the number of objects in a group and get a list of the objects.
Effects. An effect is a filter on an object’s data. You can set multiple effects on an object. At draw time, the effects are applied to the object’s data in the order in which you applied them and the result is drawn to the object’s surface. Currently supported effects include horizontal flipping, vertical flipping, horizontal shearing, vertical shearing, smorphing (simple morphing -- applies an application-defined mathematical transformation to an object), full screen display, modeX display, color mapping, and others.
Timers and Events. Timers and events allow you to schedule and synchronize the activities of objects. You schedule an event to occur at a specific point in time (or periodically) by creating the event, creating a timer to go with it, and then associating the two. Currently supported events include setting an attribute, adjusting an attribute, drawing, and others.
Collision Regions and Hot Spots. Collision regions and hot spots allow you to detect dynamic interactions between moving objects. A collision region or hot spot is defined by a bounding rectangle that surrounds a group of pixels (a door, for example). The hot spots can be embedded in a video stream. The library provides functions that allow you to define bounding rectangles and detect collisions that occur within those bounds.
Device support. The Intel RDX library provides support for setting and getting values in the hardware palette register.
¹ We present the phases as if they were discrete and sequential, but in a real application they overlap.
* Legal Information © 1998 Intel Corporation